package com.aayush.libs.location.interfaces;

import java.util.List;

import android.location.Location;

import com.aayush.libs.generic_structures.JarvisStack;

public interface LocationTracker {
	String TAG = "Location";
	/**
	 * This will start a fresh tracker
	 * @return Has Tracker is started or not
	 */
	boolean startTracker();
	
	/**
	 * The previous locations are restored if some are present and resume tracking.
	 * @return Has Tracker is resumed or not.
	 */
	boolean resumeTracker();
	
	/**
	 * This function will pause the tracking, and do not record further.
	 * But last tracked positions will persist in tracker.
	 * @return last known Location
	 */
	Location pauseTracker();
	
	/**
	 * This will stop the tracking and destroy all the tracking info in the location
	 * try to avoid this function and use pauseTracker() function if you don't want to 
	 * clear the tracker data.
	 * @return last Known Location
	 */
	Location stopTracker();
	
	/**
	 * This function reset all the data in tracker and clear all previous locations
	 * including @{@value minDistanceDifference}
	 * @{@value minTimeDifference}
	 */
	void reset();
	
	/**
	 * 
	 * @return stack of user locations recorded.
	 */
	JarvisStack<Location> getAllUserLocationsInOrder();
	
	/**
	 * 
	 * @return list of user locations recorded.
	 */
	List<Location> getAllUserLocationsInList();
}
